<?php


             
 // Carga de Queryx
 require_once("core/queryx.php");

 /**
  * ---------------------------------------------------------------
  * SALA CLASE 
  * ---------------------------------------------------------------
  * Funciones necesarias relacionadas con el sala , esta clase necesita Queryx y esta a su vez
  * necesita de la clase Connect (en la cual deben especificarse los parametros de conexión)
  * están localizadas en engine.
  * 
  * @author Sergio Morlán Páramo
  */


class Sala_class extends Queryx {

    private $id, $numero, $edificio, $facultad, $especificaciones;
 

/**
* ---------------------------------------------------------------
* CONSTRUCTOR
* ---------------------------------------------------------------
*/
public function __construct($p_id = FALSE){
parent::__construct();
if($p_id){
return $this->xget($p_id);}else {
return FALSE;
}
}




/*
 *---------------------------------------------------------------
 * SET METHODS
 *---------------------------------------------------------------
 */
 
/**
* Vamos a colocar el atributo id
*@param String $p_id Attr
*/
public function set_id($p_id){
$this->id= $p_id;
}

/**
* Vamos a colocar el atributo numero
*@param String $p_numero Attr
*/
public function set_numero($p_numero){
$this->numero= $p_numero;
}

/**
* Vamos a colocar el atributo edificio
*@param String $p_edificio Attr
*/
public function set_edificio($p_edificio){
$this->edificio= $p_edificio;
}

/**
* Vamos a colocar el atributo facultad
*@param String $p_facultad Attr
*/
public function set_facultad($p_facultad){
$this->facultad= $p_facultad;
}

/**
* Vamos a colocar el atributo especificaciones
*@param String $p_especificaciones Attr
*/
public function set_especificaciones($p_especificaciones){
$this->especificaciones= $p_especificaciones;
}




/*
 *---------------------------------------------------------------
 * GET METHODS
 *---------------------------------------------------------------
 */
 
/**
* Vamos a obtener el atributoid
*@return String $this->id
*/
public function get_id(){
return $this->id;
}

/**
* Vamos a obtener el atributonumero
*@return String $this->numero
*/
public function get_numero(){
return $this->numero;
}

/**
* Vamos a obtener el atributoedificio
*@return String $this->edificio
*/
public function get_edificio(){
return $this->edificio;
}

/**
* Vamos a obtener el atributofacultad
*@return String $this->facultad
*/
public function get_facultad(){
return $this->facultad;
}

/**
* Vamos a obtener el atributoespecificaciones
*@return String $this->especificaciones
*/
public function get_especificaciones(){
return $this->especificaciones;
}


 

/*
 *---------------------------------------------------------------
 * BASIC METHODS
 *---------------------------------------------------------------
 */
 
/**
* Inserta en SALA
* Previamente colocados sus atributos con métodos Set
*
*/
public function xnew(){
$query = "INSERT INTO `SALA` (`id`, `numero`, `edificio`, `facultad`, `especificaciones`) VALUES ('".$this->id."', '".$this->numero."', '".$this->edificio."', '".$this->facultad."', '".$this->especificaciones."'); ";
return $this->run_queryx($query);
}

/**
* Actualiza todos los campos de SALA
* Previamente colocados sus atributos actualizados con métodos Set 
*
*@param int $p_idId de SALA
*/
public function xchange($p_id){
$query = "UPDATE `SALA` SET `numero` = '".$this->numero."', `edificio` = '".$this->edificio."', `facultad` = '".$this->facultad."', `especificaciones` = '".$this->especificaciones."' WHERE id = '".$p_id."';";
return $this->run_queryx($query);
}

/**
* Elimina definitivamente de la base de datos SALA
*
*@param int $p_idId de SALA
*/
public function xdel($p_id){
$query = "DELETE FROM `SALA` WHERE `id` = '".$p_id."';";
return $this->run_queryx($query); 
}

 

/*
 *---------------------------------------------------------------
 * SEARCH METHODS
 *---------------------------------------------------------------
 */
 
/**
* Busca y Devuleve un único registro en SALA
* @access private
* @param int $p_idId de SALA
* @param int $p_field campo UNIQUE o PRIMARY KEY de SALA
*/
private function xget($p_id, $p_field=FALSE){
$index = "id";
if ($p_field) 
$index = $p_field;
$query = "SELECT * FROM `SALA` WHERE `$index` = '".$p_id."' LIMIT 1;";
$result = $this->run_queryx($query);
if ($this->get_total_rows() > 0) {
$this->xassign($result);
return TRUE;
}
return FALSE;
}

/**
* Busca y Devuleve todos registro en SALA
* @param Array $p_campos Arreglo de los Campos a Seleccionar
* @param String $p_filtro Cadena con los filtros para la búsqueda
* @return Mixed
*/
public function xgets($p_campos=FALSE, $p_filtro=FALSE, $p_order=FALSE){
$sala = NULL;
$campos = "*";
$filtro = "";
$order = "";
if ($p_campos) { 
$campos = "`id`,";
if (is_array($p_campos)) {
 for ($i = 0; $i < count($p_campos); $i++) {
$campos .= "`" . $p_campos[$i] . "`";
if ($i < count($p_campos)-1) {
$campos .=", ";
 }
}
} else {
$campos .= "`" . $p_campos . "` ";
}
}
if ($p_filtro) 
$filtro = "WHERE ".$p_filtro;
if($p_order)
$order = "ORDER BY `".$p_order."`";
$query = "SELECT $campos FROM `SALA` $filtro $order;";
$result = $this->run_queryx($query);
if ($this->get_total_rows() > 0) {
while ($row = mysql_fetch_array($result)) {
$sala[] = new Sala_class($row[0]);
}
return $sala;
}
return FALSE;
}


/*
 *---------------------------------------------------------------
 * JOIN METHODS
 *---------------------------------------------------------------
 */
 


/*
 *---------------------------------------------------------------
 * LEAVE METHODS
 *---------------------------------------------------------------
 */
 
/*
* ---------------------------------------------------------------
* ASSIGN METHODS
* ---------------------------------------------------------------
*/

/**
*Asignación Coloca todos los atributos del objeto encontrado mediante xget()
*Sólo soporta un resultado
* @access private
* @param resource $p_queryx (query) SELECT sólo registro devuelto
*
*/
private function xassign($p_queryx){
$this->id=mysql_result($p_queryx, 0, 0);
$this->numero=mysql_result($p_queryx, 0, 1);
$this->edificio=mysql_result($p_queryx, 0, 2);
$this->facultad=mysql_result($p_queryx, 0, 3);
$this->especificaciones=mysql_result($p_queryx, 0, 4);
}


 /*
 *---------------------------------------------------------------
 * OTHER METHODS
 *---------------------------------------------------------------
 */
 


     /**
      * Vamos a obtener el ultimo mayor registro en matricula de sala
      * @return int  
      */
     public function get_ultimomayor() {
         $query = "SELECT MAX(`id`) AS id FROM `SALA`";
         $row = mysql_fetch_assoc($this->run_queryx($query));
         return $row["id"];

     } 


   /**
      * Retorna el siguiente registro sugerido para matricula en sala
      * por default incrementará en 1 no es recomendable cambiar este parámetro
      * a menos que sea muy necesario
      * @param int $incremento Cuanto deseas incrementar al último registro obtenido
      * @return int El id (id) sugerido 
      */
     public function get_siguienteID($incremento = 1) {
         return $this->get_ultimomayor() + 1;

     }

        
    
}           

